package com.egzosn.figure.qiniu.api;

import com.egzosn.figure.common.api.FigureBedConfigStorage;
import com.egzosn.figure.qiniu.bean.ZoneType;
import com.qiniu.util.StringMap;

/**
 * 七牛云服务配置
 * @author egan
 *         email egzosn@gmail.com
 *         date 2018/8/20.20:20
 */
public class QiNiuFigureBedConfigStorage implements FigureBedConfigStorage {
    /**
     *  accessKey
     */
    private String accessKey;
    /**
     * secretKey
     */
    private String secretKey;

    /**
     *  存储空间对应的分区
     * 分区 多区域上传域名
     *
     * huadong
     * huabei
     * huanan
     * beimei
     * xinjiapo
     *
     * autoZone
     * <p/>
     * 分区存放了各个主机的信息
     *
     * {@link ZoneType}
     */
    private String zone;
    /**
     * 存储空间名称
     */
    private String bucket;
    /**
     * 编码格式
     */
    private String encoding;
    /**
     * 定义七牛云上传的相关策略
     * 参考文档：<a href="https://developer.qiniu.com/kodo/manual/1206/put-policy">上传策略</a>
     */
    private StringMap putPolicy;
    /**
     * 资源访问地址，域名等
     */
    private String url;
    /**
     * 附加信息
     */
    private String addition;

    private long expires = 3600;

    public String getAccessKey() {
        return accessKey;
    }

    public void setAccessKey(String accessKey) {
        this.accessKey = accessKey;
    }

    /**
     * 获取用户名
     *
     * @return 用户名
     */
    public String getUserName() {
        return accessKey;
    }

    public String getSecretKey() {
        return secretKey;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    /**
     * 访问地址，一般为资源浏览地址，
     *
     * @return 访问地址
     */
    public String getAccessAddress() {
        return url;
    }

    /**
     * 获取存放的资源库，服务器存放资源目录，空间名称等
     *
     * @return 资源库，服务器存放资源目录，空间名称等
     */
    public String getDataBase() {
        return bucket;
    }

    /**
     * 获取主机地址
     *
     * @return 主机地址
     */
    public String getHostname() {
        return zone;
    }

    /**
     * 获取主机端口
     *
     * @return 端口
     */
    public int getPort() {
        return 0;
    }

    public void setEncoding(String encoding) {
        this.encoding = encoding;
    }

    /**
     * 编码格式
     *
     * @return 编码格式
     */
    public String getEncoding() {
        return encoding;
    }

    /**
     * 是否为被动模式 true 是，否则主动
     *
     * @return 是否为被动模式
     */
    public boolean isPassiveMode() {
        return false;
    }

    /**
     * 超时时间
     *
     * @return 超时时间
     */
    public long getClientTimeout() {
        return expires;
    }


    /**
     * 附加信息，开发者自定义
     *
     * @return 附加信息
     */
    public String getAddition() {
        return addition;
    }

    public String getBucket() {
        return bucket;
    }

    public void setBucket(String bucket) {
        this.bucket = bucket;
    }

    public void setAddition(String addition) {
        this.addition = addition;
    }

    public void setSecretKey(String secretKey) {
        this.secretKey = secretKey;
    }

    public String getZone() {
        return zone;
    }

    public void setZone(String zone) {
        this.zone = zone;
    }

    public StringMap getPutPolicy() {
        return putPolicy;
    }

    public void setPutPolicy(StringMap putPolicy) {
        this.putPolicy = putPolicy;
    }
}
